/*
 * Proyecto Manejador de Proyectos
 * @Autor Hector Hurtado
 */
package Mproyectos.conversores;

import Mproyectos.controladores.ControladorGrupoInvestigacion;
import Mproyectos.entidades.GrupoInvestigacion;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

/**
 * Convertir para la clase GrupoInvestigacion
 */
@FacesConverter("conversorGrupoInvestigacion")
public class ConversorGrupoInvestigacion implements Converter {

    /**
     * Devuelve el Grupo de Investigacion como objeto cuando se envia el nombre
     * en texto
     *
     * @param context
     * @param component
     * @param value
     * @return el Grupo de Investigacion que en la base de datos tiene ese
     * nombre
     */
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {

        // Cargar el controlador del Grupo de Investigacion 
        ControladorGrupoInvestigacion controlador = (ControladorGrupoInvestigacion) context.getApplication().getELResolver().
                getValue(context.getELContext(), null, "controladorGrupoInvestigacion");

        // Obtener la fachada y buscarla
        return controlador.getFachadaGrupoInvestigacion().buscar(value);
    }

    /**
     * Retorna el nombre del Grupo de Investigacion si el objeto enviado es un
     * Grupo de Investigacion, si no devuelve la cadena desconocido
     *
     * @param context
     * @param component
     * @param value
     * @return El nombre del Grupo de Investigacion
     */
    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        // Verifica si es del tipo Grupo de Investigacion y le saca el nombre 
        if (value instanceof GrupoInvestigacion) {
            GrupoInvestigacion grupoInvestigacion = (GrupoInvestigacion) value;
            return grupoInvestigacion.getNombre();
        }

        return "Desconocido";
    }
}
